#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H

#include "GLWidget.h"
#include "EditorObjectWidget.h"
#include "AnimationWidget.h"
#include "PropertyWidget.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

    public:
        MainWindow();

    private slots:
        void newProject();
        void openProject();
        void closeProject();
        void saveProject();
        void saveAsProject();
        void quitApplication();

        void editorObjectWidget();
        void propertyWidget();
        void animationWidget();

        void aboutApplication();

        void playAnimation();
        void pauseAnimation();
        void stopAnimation();
        void loopAnimation();

    private:
        void createActions();
        void createMenus();
        void createTools();
        void createViewers();

    private:
        // Menu Bar
        QMenu *mpMenuFile;
        QAction *mpActionNew;
        QAction *mpActionOpen;
        QAction *mpActionClose;
        QAction *mpActionSave;
        QAction *mpActionSaveAs;
        QAction *mpActionQuit;

        QMenu *mpMenuEdit;

        QMenu *mpMenuView;
        QAction *mpActionEditorObjectWidget;
        QAction *mpActionPropertyWidget;
        QAction *mpActionAnimationWidget;

        QMenu *mpMenuObject;

        QMenu *mpMenuAbout;
        QAction *mpActionAboutApplication;

        // Tool Bar
        QToolBar *mpToolBar;
        QAction *mpActionPlay;
        QAction *mpActionPause;
        QAction *mpActionStop;
        QAction *mpActionLoop;

        // Widget
        GLWidget *mpGLWidget;
        EditorObjectWidget *mpEditorObjectWidget;
        PropertyWidget *mpPropertyWidget;
        AnimationWidget *mpAnimationWidget;

        // Nuclear Engine
        ne::Engine *mpEngine;
};

#endif
